#ifndef _MESH_MANAGER_H_
#define _MESH_MANAGER_H_

#include "RenderMesh.h"

class MeshManager
{
	//////////////////////////////////////////////////////////////////////////
	//	------------------------------------------------------------------	//
	//							DATA	MEMBERS								//
	//	------------------------------------------------------------------	//
	//////////////////////////////////////////////////////////////////////////

	// Singleton's static instance
	static MeshManager* sm_pInstance;

	vector<RenderMesh*> m_vpMeshes;

	//////////////////////////////////////////////////////////////////////////
	//	------------------------------------------------------------------	//
	//							PRIVATE	FUNCTIONS							//
	//	------------------------------------------------------------------	//
	//////////////////////////////////////////////////////////////////////////

	// Default Constructor - Initialize all variables to safe values
	MeshManager(void);

	// For a proper singleton, the trilogy needs to be defined
	MeshManager(const MeshManager&) {}				// Copy Constructor
	MeshManager& operator=(const MeshManager&) {}		// Assignment Operator
	~MeshManager(void) {}								// Destructor

public:
	//////////////////////////////////////////////////////////////////////////
	//	------------------------------------------------------------------	//
	//							PUBLIC	FUNCTIONS							//
	//	------------------------------------------------------------------	//
	//////////////////////////////////////////////////////////////////////////

	// Used to access the singleton's instance
	static MeshManager* GetInstance(void);

	// Used to delete the singleton's instance
	static void DeleteInstance(void);

	void Initialize(void);

	int LoadMesh(const char* filename);

	void DrawMesh(int meshID);
};

#define MESH_MNG MeshManager::GetInstance()

#endif // _MESH_MANAGER_H_